function forLabelExec(templateStr) {  
    let result = '';  
    let match;  
    // 使用正则表达式匹配 <for el="..."> ... </for>  
    // 注意：它可以处理属性值使用单引号或双引号，并且允许在属性名和等号、等号和属性值、属性值之后和标签闭合之前存在任意数量的空格
    const regex = /<if\s+el\s*=\s*(['"])(.*?)\1\s*>([\s\S]*?)<\/if>/g; 
  
    while ((match = regex.exec(templateStr)) !== null) {
      const loope = match[2].trim(); // 获取并修剪 el 属性的值  
      let loopb = match[3].trim(); // 获取并修剪 <for> 和 </for> 之间的内容  
      // 如果 loopb 末尾有换行符，则移除它（可选，取决于您想要的输出格式）  
      if (loopb.endsWith('\n')) {  
        loopb = loopb.slice(0, -1); 
      }  
      //result += `for(${loope}){str += \`${loopb}\\n\`;\n}\n`;  
      result += `\`\nfor(${loope}){str+=\`${loopb.trim()}\`}str+=\``;  
      // 注意：我在模板字符串的末尾添加了 \\n 来表示换行符，并在整个字符串后添加了分号  
      // 如果您不希望每个循环后都有换行符，可以移除 \\n  
  }
    return result===''?templateStr:result;
}

const template = `
<if el='var i in [1,2,3]' >
<else if(aaa>0)>
<else>
</if>
`;

console.log(forLabelExec(template));